package com.lzw.common.mapper;


import com.lzw.common.param.PageParam;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 基础mapper接口，可以实现增删查改功能，其他所有的mapper可以选择继承该mapper
 * Created by 林志伟 on 2017/5/11.
 */
@Mapper
@Repository
public interface BaseMapper<T> {
    /**
     * 插入数据
     * @param t
     * @return
     */
    public int insert(T t);

    /**
     * 修改数据
     * @param t
     * @return
     */
    public int update(T t);

    /**
     * 删除指定id的数据
     * @param id
     * @return
     */
    public int delete(@Param("id") Integer id);

    public int deleteAll(@Param("ids") int[] ids);

    /**
     * 查找指定数据
     * @param id
     * @return
     */
    public T find(@Param("id") Integer id);

    /**
     * 查询前size条数据
     * @param size
     * @return
     */
    public List<T> select(@Param("size") int size);

    /**
     * 分页查询
     * @param page
     * @return
     */
    public List<T> page(PageParam pageParam);

    /**
     *
     * 启用
     * @param id
     * @return
     */
    public int open(@Param("id") Integer id);


    /**
     *
     * 禁用
     * @param id
     * @return
     */
    public int close(@Param("id") Integer id);

}

